[C] Manipulação de vetores/ponteiros
Publicado por Enzo de Brito Ferber (última atualização em 15/09/2010)
[ Hits: 11.202 ]
Homepage: http://www.maximasonorizacao.com.br
Programa que mistura a manipulação de vetores e ponteiros para criar um vetor C baseado em outros 2 vetores A e B. O vetor C conterá todos os elementos de A mais os elementos não repetidos de B.
// vet.c #include <stdio.h> #include <string.h> #include <stdlib.h> #define ELEMENTS 5 #define COMB 10 #define TRUE 1 #define FALSE 0 int *geraVet( int a[], int b[] ) { register int i, j; int found; // o maximo de elementos que o vetor pode ter é COMB ( a + b ), // caso nenhum dos elementos sejam repetidos int *c = (int *) malloc( COMB * sizeof( int )); int *d; // check de memoria if ( !c ) return NULL; /* PONTEIROS * --------- * * O uso de ponteiros é melhor para não causar problemas * no retorno da funçao, e também possibilitam uma manipulação * melhor dos dados. * */ // inicializa o vetor for( i = 0; i < COMB; i++ ) c[ i ] = 0; // copia dos elementos do primeiro vetor for( i = 0; i < ELEMENTS; i++ ) c[ i ] = a[ i ]; // 'd' é usado como referencia para o proximo endereço vazio do ponteiro 'c' d = c + ELEMENTS; // copia com comparação de repetição for( j = 0; j < ELEMENTS; j++ ) { // variavel de controle found = FALSE; // loop de comparação for( i = 0; i < ELEMENTS; i++ ) if ( b[j] == c[i] ) found = TRUE; // se o elemento nao for repetido, a copia é feita. if ( !found) *(d++) = b[j]; } // retorno do endereço do ponteiro return c; } int main( int argc, char *argv[] ) { // vetores de teste int a[] = { 1, 2, 3, 4, 5 }; int b[] = { 2, 3, 4, 5, 6 }; int c[] = { 5, 6, 7, 8, 9 }; int d[] = { 6, 7, 8, 9, 10 }; // retorno int *ret; // controladores de loop register int i; /* COMBINAÇÕES: * * A - B B - C * A - C B - D * A - D C - D */ // combinação ret = geraVet( a, b ); // impressão do vetor for( i = 0; i < COMB; i++ ) printf( "ret[ %2d ]: %2d\n", i, ret[ i ]); // fim do programa return 0; }
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (1)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta